1. Field of the Invention
The present invention relates to virtualization, and more particularly, to emulation of super speed external devices in Virtual Machines (VMs).
2. Description of the Related Art
The industry trend of virtualization and isolation of computer system resources presents some challenges with regard to use of external devices by Virtual Machines. A Virtual Machine (VM) is a type of an isolated Virtual Environment where multiple VMs can run on the same physical machine simultaneously. Each VM instance has a set of its own software components and uses hardware modules of the physical machine where the VM resides.
Typically, there are multiple VMs created on a host operating system. In such system, some resources of the host operating system can be isolated and allocated for running each of the VMs. An example of this type of system is a computing environment provided by VMware™. The VMware™ solution provides standardized isolated secured computing environments. This product is typically used as an enterprise-level solution, where a number of VMware™ Virtual Machines are distributed throughout the computer system. However, the VMware™ solution does not provide adequate support for using system hardware for support and acceleration of the VMs.
Virtualization allows running a number of VMs on the same physical machine. Examples of conventional virtualization solutions are virtual systems by VMware™, Parallels Software International, Inc., Microsoft Virtual Server, Microsoft/Citrix Terminal Server, Virtuozzo™ by SWSoft (Parallels), Xen systems by XenSource, Solaris Zones, etc. All of these systems, however, provide only limited support for a low level (i.e., hardware) virtualization.
With Virtual Machine (VM) technology, a user can create and run multiple virtual environments on a physical server at the same time. Each virtual environment (such as a VM), requires its own operating system (a Guest OS) and can run applications independently. The VM software provides a layer between the computing, storage, and networking hardware and the software that runs on it.
A majority of VM Guest OSs can work seamlessly with most of the external devices connected to a host via USB or FireWire interfaces. Virtual Machines (VM) run software applications that connect real devices with the Guest OS by pushing the device commands through to a virtual hub, which receives requests from the Guest OS. The “push through” approach allows the Guest OS to see the external devices “as is.” A virtual hub is an emulated physical hub, which is used to increase a number of available ports.
USB 3.0 device can function in 2 different modes. The choice is made electrically based on the number of contacts in the USB socket. In these modes, the device returns different metadata for standard requests, including GET_DESCRIPTOR, etc. If the host controller is USB 3.0 capable, the device returns 3.0 metadata only.
However, if the Guest system runs an outdated OS (for example, some legacy OS intended for use on older, less powerful, computers), which does not support interfaces of the super speed USB, problems can occur. For example, Linux 2.4 does not support super speed USB 3.0. Thus, it is not possible toplug a device into 3.0 USB port in Guest as it will not be seen at all (since there is no driver in the Guest). In this case, it is possible to plug the device into 2.0 USB port, although there will be a problem due to different metadata format. Conventional operating systems, especially legacy ones, do not provide any mechanism to fix this problem. They rely on the hardware layer, which is not applicable, as described above.
Accordingly, there is a need in the art for a method for virtualization of external devices in the VMs in order to use them by the Guest systems running older versions of the OS. In particular, the invention is intended to operate in the host in USB 3.0 mode and USB 2.0 mode in the VM.